// 启动RabbitMQ邮件消费者
const { mailConsumer } = require('../utils/rabbit-mq');

// 重试配置（避免一次性失败）
const MAX_RETRIES = 3; // 最大重试次数
let retryCount = 0;

/**
 * 安全启动邮件消费者（带重试和错误处理）
 */
async function startMailConsumer() {
  try {
    await mailConsumer();
    console.log('✅ 邮件消费者已成功启动');
  } catch (error) {
    retryCount++;
    console.error(`❌ 邮件消费者启动失败（第${retryCount}次）：`, error.message);

    // 达到最大重试次数则退出，未达到则延迟重试
    if (retryCount >= MAX_RETRIES) {
      console.error('❌ 已达到最大重试次数，启动失败，进程退出');
      process.exit(1); // 非0退出码，便于监控告警
    }

    // 延迟重试（间隔递增，避免频繁重试）
    const delay = retryCount * 3000; // 1次3秒，2次6秒，3次9秒
    console.log(`⏳ ${delay}ms后进行第${retryCount + 1}次重试...`);
    setTimeout(startMailConsumer, delay);
  }
}

// 启动执行
startMailConsumer();
